package inge_soft.gestoriusNuevo.business.service.abstraction;

import inge_soft.gestoriusNuevo.persistence.DAO.Exceptions.Abstraction.GestoriusException;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.DomicilioTipificado;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.EstadoInstitucion;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Institucion;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Localidad;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Pais;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.Provincia;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.TipoDomicilio;

import java.util.List;

import org.springframework.dao.DataAccessException;

public interface IInstitucionService {

	public List<Institucion> obtenerInstituciones(String nickUsuario)
			throws DataAccessException;

	public void crearInstitucion(String nickUsuario,
			Institucion institucionNueva) throws DataAccessException;

	public void modificarInstitucion(String nickUsuario,
			Institucion institucionModificada) throws DataAccessException;

	public void crearDomicilio(String nickUsuario,
			Institucion institucionModificada, DomicilioTipificado domicilio)
			throws DataAccessException;

	public void modificarDomicilio(String nickUsuario,
			Institucion institucionModificada, DomicilioTipificado domicilio)
			throws DataAccessException;

	public List<EstadoInstitucion> obtenerEstadosInstitucion();

	public List<TipoDomicilio> obtenerTipoDomicilios()
			throws GestoriusException;

	public List<Provincia> obtenerProvincias(Pais pais)
			throws GestoriusException;

	public List<Localidad> obtenerLocalidades(Provincia provincia)
			throws GestoriusException;

	public List<Pais> obtenerPaises() throws GestoriusException;

}